//
// For AMD Vega 56 and Vega 64 
// 
DefinitionBlock ("", "SSDT", 2, "hack", "VEGA", 0)
{
    External (_SB.PCI0.PEG0, DeviceObj)
    External (_SB.PCI0.PEG0.PEGP, DeviceObj)

    Scope (_SB.PCI0.PEG0)
    {
        Scope (PEGP)
        {
            Name (_STA, Zero)
        }

        Device (EGP0)
        {
            Name (_ADR, Zero)
            Device (EGP1)
            {
                Name (_ADR, Zero)
                Device (GFX0)
                {
                    Name (_ADR, Zero)
                    Method (_DSM, 4, NotSerialized)
                    {
                        If ((Arg2 == Zero))
                        {
                            Return (Buffer (One)
                            {
                                 0x03
                            })
                        }

                        Return (Package ()
                        {
                            "AAPL,slot-name", 
                            Buffer ()
                            {
                                "PCI-Express 3.0"
                            }, 

                            "@0,name", 
                            Buffer ()
                            {
                                "ATY,Iriri"
                            }, 

                            "@1,name", 
                            Buffer ()
                            {
                                "ATY,Iriri"
                            }, 

                            "@2,name", 
                            Buffer ()
                            {
                                "ATY,Iriri"
                            }, 

                            "@3,name", 
                            Buffer ()
                            {
                                "ATY,Iriri"
                            }, 

                            "model", 
                            Buffer ()
                            {
                                "Radeon RX Vega 64"
                            }, 

                            "device_type", 
                            Buffer ()
                            {
                                "ATY,IririParent"
                            }, 

                            "hda-gfx", 
                            Buffer ()
                            {
                                "onboard-1"
                            }, 

                            "PP_DisablePowerContainment", 
                            Buffer ()
                            {
                                 0x01
                            }, 

                            "PP_PhmSoftPowerPlayTable", 
                            Buffer ()
                            {
                                /* 0000 */  0xB6, 0x02, 0x08, 0x01, 0x00, 0x5C, 0x00, 0xE1,  // .....\..
                                /* 0008 */  0x06, 0x00, 0x00, 0xEE, 0x2B, 0x00, 0x00, 0x1B,  // ....+...
                                /* 0010 */  0x00, 0x48, 0x00, 0x00, 0x00, 0x80, 0xA9, 0x03,  // .H......
                                /* 0018 */  0x00, 0xF0, 0x49, 0x02, 0x00, 0x32, 0x00, 0x08,  // ..I..2..
                                /* 0020 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                                /* 0028 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,  // ........
                                /* 0030 */  0x5C, 0x00, 0x4F, 0x02, 0x46, 0x02, 0x94, 0x00,  // \.O.F...
                                /* 0038 */  0x9E, 0x01, 0xBE, 0x00, 0x28, 0x01, 0x7A, 0x00,  // ....(.z.
                                /* 0040 */  0x8C, 0x00, 0xBC, 0x01, 0x00, 0x00, 0x00, 0x00,  // ........
                                /* 0048 */  0x72, 0x02, 0x00, 0x00, 0x90, 0x00, 0xA8, 0x02,  // r.......
                                /* 0050 */  0x6D, 0x01, 0x43, 0x01, 0x97, 0x01, 0xF0, 0x49,  // m.C....I
                                /* 0058 */  0x02, 0x00, 0x71, 0x02, 0x02, 0x02, 0x00, 0x00,  // ..q.....
                                /* 0060 */  0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,  // ........
                                /* 0068 */  0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00,  // ........
                                /* 0070 */  0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                                /* 0078 */  0x00, 0x00, 0x01, 0x08, 0x20, 0x03, 0x84, 0x03,  // .... ...
                                /* 0080 */  0xB6, 0x03, 0xE8, 0x03, 0x1A, 0x04, 0x4C, 0x04,  // ......L.
                                /* 0088 */  0x7E, 0x04, 0xB0, 0x04, 0x01, 0x01, 0x46, 0x05,  // ~.....F.
                                /* 0090 */  0x01, 0x01, 0x84, 0x03, 0x00, 0x08, 0x60, 0xEA,  // ......`.
                                /* 0098 */  0x00, 0x00, 0x00, 0x40, 0x19, 0x01, 0x00, 0x01,  // ...@....
                                /* 00A0 */  0x80, 0x38, 0x01, 0x00, 0x02, 0xDC, 0x4A, 0x01,  // .8....J.
                                /* 00A8 */  0x00, 0x03, 0x90, 0x5F, 0x01, 0x00, 0x04, 0x00,  // ..._....
                                /* 00B0 */  0x77, 0x01, 0x00, 0x05, 0x90, 0x91, 0x01, 0x00,  // w.......
                                /* 00B8 */  0x06, 0x6C, 0xB0, 0x01, 0x00, 0x07, 0x01, 0x08,  // .l......
                                /* 00C0 */  0xD0, 0x4C, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00,  // .L......
                                /* 00C8 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x83, 0x01,  // ........
                                /* 00D0 */  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                                /* 00D8 */  0x00, 0x00, 0x70, 0xA7, 0x01, 0x00, 0x02, 0x00,  // ..p.....
                                /* 00E0 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88,  // ........
                                /* 00E8 */  0xBC, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,  // ........
                                /* 00F0 */  0x00, 0x00, 0x00, 0x00, 0xC0, 0xD4, 0x01, 0x00,  // ........
                                /* 00F8 */  0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                                /* 0100 */  0x00, 0x44, 0x23, 0x02, 0x00, 0x05, 0x00, 0x00,  // .D#.....
                                /* 0108 */  0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xA0, 0x67,  // .......g
                                /* 0110 */  0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01,  // ........
                                /* 0118 */  0x00, 0x00, 0x00, 0x9C, 0x89, 0x02, 0x00, 0x07,  // ........
                                /* 0120 */  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,  // ........
                                /* 0128 */  0x00, 0x05, 0x60, 0xEA, 0x00, 0x00, 0x00, 0x40,  // ..`....@
                                /* 0130 */  0x19, 0x01, 0x00, 0x00, 0x80, 0x38, 0x01, 0x00,  // .....8..
                                /* 0138 */  0x00, 0xDC, 0x4A, 0x01, 0x00, 0x00, 0x90, 0x5F,  // ..J...._
                                /* 0140 */  0x01, 0x00, 0x00, 0x00, 0x08, 0x28, 0x6E, 0x00,  // .....(n.
                                /* 0148 */  0x00, 0x00, 0x2C, 0xC9, 0x00, 0x00, 0x01, 0xF8,  // ..,.....
                                /* 0150 */  0x0B, 0x01, 0x00, 0x02, 0x80, 0x38, 0x01, 0x00,  // .....8..
                                /* 0158 */  0x03, 0x90, 0x5F, 0x01, 0x00, 0x04, 0xF4, 0x91,  // .._.....
                                /* 0160 */  0x01, 0x00, 0x05, 0xD0, 0xB0, 0x01, 0x00, 0x06,  // ........
                                /* 0168 */  0xC0, 0xD4, 0x01, 0x00, 0x07, 0x00, 0x08, 0x6C,  // .......l
                                /* 0170 */  0x39, 0x00, 0x00, 0x00, 0x24, 0x5E, 0x00, 0x00,  // 9...$^..
                                /* 0178 */  0x01, 0xFC, 0x85, 0x00, 0x00, 0x02, 0xAC, 0xBC,  // ........
                                /* 0180 */  0x00, 0x00, 0x03, 0x34, 0xD0, 0x00, 0x00, 0x04,  // ...4....
                                /* 0188 */  0x68, 0x6E, 0x01, 0x00, 0x05, 0x08, 0x97, 0x01,  // hn......
                                /* 0190 */  0x00, 0x06, 0xEC, 0xA3, 0x01, 0x00, 0x07, 0x00,  // ........
                                /* 0198 */  0x01, 0x68, 0x3C, 0x01, 0x00, 0x00, 0x01, 0x04,  // .h<.....
                                /* 01A0 */  0x3C, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,  // <A.....P
                                /* 01A8 */  0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x38,  // .......8
                                /* 01B0 */  0x01, 0x00, 0x02, 0x00, 0x00, 0xA0, 0x86, 0x01,  // ........
                                /* 01B8 */  0x00, 0x04, 0x00, 0x00, 0x01, 0x08, 0x00, 0x98,  // ........
                                /* 01C0 */  0x85, 0x00, 0x00, 0x40, 0xB5, 0x00, 0x00, 0x60,  // ...@...`
                                /* 01C8 */  0xEA, 0x00, 0x00, 0x50, 0xC3, 0x00, 0x00, 0x01,  // ...P....
                                /* 01D0 */  0x80, 0xBB, 0x00, 0x00, 0x60, 0xEA, 0x00, 0x00,  // ....`...
                                /* 01D8 */  0x94, 0x0B, 0x01, 0x00, 0x50, 0xC3, 0x00, 0x00,  // ....P...
                                /* 01E0 */  0x02, 0x00, 0xE1, 0x00, 0x00, 0x94, 0x0B, 0x01,  // ........
                                /* 01E8 */  0x00, 0x40, 0x19, 0x01, 0x00, 0x50, 0xC3, 0x00,  // .@...P..
                                /* 01F0 */  0x00, 0x03, 0x78, 0xFF, 0x00, 0x00, 0x40, 0x19,  // ..x...@.
                                /* 01F8 */  0x01, 0x00, 0x88, 0x26, 0x01, 0x00, 0x50, 0xC3,  // ...&..P.
                                /* 0200 */  0x00, 0x00, 0x04, 0x40, 0x19, 0x01, 0x00, 0x80,  // ...@....
                                /* 0208 */  0x38, 0x01, 0x00, 0x80, 0x38, 0x01, 0x00, 0x50,  // 8...8..P
                                /* 0210 */  0xC3, 0x00, 0x00, 0x05, 0x80, 0x38, 0x01, 0x00,  // .....8..
                                /* 0218 */  0xDC, 0x4A, 0x01, 0x00, 0xDC, 0x4A, 0x01, 0x00,  // .J...J..
                                /* 0220 */  0x50, 0xC3, 0x00, 0x00, 0x06, 0x00, 0x77, 0x01,  // P.....w.
                                /* 0228 */  0x00, 0x00, 0x77, 0x01, 0x00, 0x90, 0x5F, 0x01,  // ..w..._.
                                /* 0230 */  0x00, 0x50, 0xC3, 0x00, 0x00, 0x07, 0x90, 0x91,  // .P......
                                /* 0238 */  0x01, 0x00, 0x90, 0x91, 0x01, 0x00, 0x00, 0x77,  // .......w
                                /* 0240 */  0x01, 0x00, 0x50, 0xC3, 0x00, 0x00, 0x01, 0x18,  // ..P.....
                                /* 0248 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B,  // ........
                                /* 0250 */  0xE4, 0x12, 0xE8, 0x03, 0x88, 0x13, 0x28, 0x00,  // ......(.
                                /* 0258 */  0x0A, 0x00, 0x54, 0x03, 0x90, 0x01, 0x90, 0x01,  // ..T.....
                                /* 0260 */  0x90, 0x01, 0x90, 0x01, 0x90, 0x01, 0x90, 0x01,  // ........
                                /* 0268 */  0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,  // ........
                                /* 0270 */  0x04, 0x32, 0x07, 0xDC, 0x00, 0xDC, 0x00, 0xDC,  // .2......
                                /* 0278 */  0x00, 0x2C, 0x01, 0x00, 0x00, 0x59, 0x00, 0x69,  // .,...Y.i
                                /* 0280 */  0x00, 0x4A, 0x00, 0x4A, 0x00, 0x5F, 0x00, 0x73,  // .J.J._.s
                                /* 0288 */  0x00, 0x73, 0x00, 0x64, 0x00, 0x40, 0x00, 0x90,  // .s.d.@..
                                /* 0290 */  0x92, 0x97, 0x60, 0x96, 0x00, 0x90, 0x55, 0x00,  // ..`...U.
                                /* 0298 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                                /* 02A0 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                                /* 02A8 */  0x02, 0x02, 0xD4, 0x30, 0x00, 0x00, 0x02, 0x10,  // ...0....
                                /* 02B0 */  0x60, 0xEA, 0x00, 0x00, 0x02, 0x10               // `.....
                            }
                        })
                    }
                    
                    Method (_STA,0,NotSerialized)
                    {
                        If (_OSI ("Darwin"))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }
                }

                Device (HDAU)
                {
                    Name (_ADR, One)
                    Method (_DSM, 4, NotSerialized)
                    {
                        If ((Arg2 == Zero))
                        {
                            Return (Buffer (One)
                            {
                                 0x03
                            })
                        }

                        Return (Package ()
                        {
                            "AAPL,slot-name", 
                            Buffer ()
                            {
                                "PCI-Express 3.0"
                            }, 

                            "name", 
                            Buffer ()
                            {
                                "ATY,Iriri"
                            }, 

                            "model", 
                            Buffer ()
                            {
                                "AMD High Definition Audio Device"
                            }, 

                            "layout-id", 
                            Buffer ()
                            {
                                 0x01, 0x00, 0x00, 0x00
                            }, 

                            "hda-gfx", 
                            Buffer ()
                            {
                                "onboard-1"
                            }
                        })
                    }
                    
                    Method (_STA,0,NotSerialized)
                    {
                        If (_OSI ("Darwin"))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }
                }
            }
        }
    }
}

